package org.zch.service;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.zch.entity.po.AdminInfoPO;

import java.util.List;

/**
 * 管理员服务类
 *
 * @author 赵昌虎
 */
@Service
public interface AdminService {

    /**
     * 新增管理员
     *
     * @param name     管理员昵称
     * @param password 管理员密码
     * @return 变更条数
     */
    @Async
    @Transactional(rollbackFor = Exception.class)
    Integer addAdmin(String name, String password);

    /**
     * 修改管理员密码
     *
     * @param password 修改后的密码
     * @param name     被修改的管理员
     * @return 变更条数
     */
    @Transactional(rollbackFor = Exception.class)
    Integer upAdminPassWord(String password, String name);

    /**
     * 删除管理员
     *
     * @param name 被删除的管理员
     * @return 变更条数
     */
    @Transactional(rollbackFor = Exception.class)
    Integer deleteAdmin(String name);

    /**
     * 管理员登录
     *
     * @param name     用户名
     * @param password 密码
     * @return 登录提示信息
     */
    String loginAdmin(String name, String password);

    /**
     * 获取管理员信息
     *
     * @param name 用户名
     * @return 管理员信息
     */
    AdminInfoPO getAdmin(String name);

    /**
     * 更新上次登录时间
     *
     * @param name 用户名
     * @return 变更条数
     */
    Integer upLastTime(String name);

    /**
     * 查询所有管理员
     *
     * @return 管理员信息列表
     */
    List<AdminInfoPO> findAll();


}
